package com.ys.web.user.friends.service;

import com.ys.web.user.friends.po.BaseUserScreenShotsPO;
import com.ys.web.user.friends.vo.GroupSetVo;
import com.ys.web.user.friends.vo.UserGroupVO;

import java.util.List;
import java.util.Map;

/**
 * @author quxinjun
 * @version 1.0.0
 * @ClassName GroupSetService.java
 * @Description 群组设置接口
 * @createTime 2021年05月24日 14:00:00
 */
public interface GroupSetService {

    /**
     * @param groupId   群组id
     * @param searchKey 搜索关键字
     * @param type      查询类型
     * @title getManagerList
     * @description 获取管理员接口
     * @author quxinjun
     * @updateTime 2021/5/26 19:18
     * @return: java.util.List<com.ys.web.user.friends.vo.UserGroupVO>
     */
    List<UserGroupVO> getManagerList(Long uid, String groupId, String searchKey, Integer type);

    /**
     * @param uid      操作用户id
     * @param groupId  群组id
     * @param memberId 成员id
     * @title setGroupManager
     * @description 设置群组管理员
     * @author quxinjun
     * @updateTime 2021/5/26 14:55
     */
    void setGroupManager(Long uid, String groupId, String memberId);

    /**
     * @param uid      操作用户id
     * @param groupId  群组id
     * @param memberId 成员id
     * @title undoGroupManager
     * @description 取消管理员
     * @author quxinjun
     * @updateTime 2021/5/26 18:36
     */
    void undoGroupManager(Long uid, String groupId, String memberId);

    /**
     * @title getBannedList
     * @description 获取禁言选择列表
     * @author quxinjun
     * @updateTime 2021/5/27 16:09
     * @return: java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
     */
    List<Map<String, Object>> getBannedList();

    /**
     * @param uid      操作人id
     * @param groupId  群组id
     * @param memberId 成员ids
     * @param code     禁言类型
     * @title setBannedUser
     * @description 设置禁言成员
     * @author quxinjun
     * @updateTime 2021/5/27 17:36
     */
    void setBannedUser(Long uid, String groupId, String memberId, Integer code);

    /**
     * @param uid     操作人id
     * @param groupId 组id
     * @param type    操作
     * @title getBannedMembersList
     * @description 获取可以禁言的用户列表
     * @author quxinjun
     * @updateTime 2021/5/27 20:57
     * @return: java.util.List<com.ys.web.user.friends.vo.UserGroupVO>
     */
    List<UserGroupVO> getBannedMembersList(Long uid, String groupId, Integer type, String searchKey);

    /**
     * @param uid       操作人id
     * @param groupId   群组id
     * @param memberIds 成员id
     * @title cancelBanned
     * @description 取消禁言
     * @author quxinjun
     * @updateTime 2021/5/28 10:19
     */
    void cancelBanned(Long uid, String groupId, String memberIds);

    /**
     * @param uid     用户id
     * @param groupId 群组id
     * @title getCurrentGroupSetForUser
     * @description 获取用户当前组的设置信息
     * @author quxinjun
     * @updateTime 2021/6/1 14:33
     * @return: com.ys.web.user.friends.vo.GroupSetVo
     */
    GroupSetVo getCurrentGroupSetForUser(Long uid, String groupId);

    /**
     * @title getGroupMessageClearSetList
     * @description 获取定时清理消息设置的集合
     * @author quxinjun
     * @updateTime 2021/6/4 16:19
     * @return: java.lang.String
     */
    List<?> getGroupMessageClearSetList();

    /**
     * @param uid     操作用户
     * @param groupId 群组id
     * @param url     图片路径
     * @title screensHotsNotice
     * @description 截屏通知
     * @author quxinjun
     * @updateTime 2021/6/7 17:43
     */
    void screensHotsNotice(Long uid, String groupId, String url);

    /**
     * @param groupId 群组id
     * @title getCurrentGroupScreenList
     * @description 获取用户在当前群中的截屏信息
     * @author quxinjun
     * @updateTime 2021/6/8 15:55
     * @return: java.util.List<com.ys.web.user.friends.po.BaseUserScreenShotsPO>
     */
    List<BaseUserScreenShotsPO> getCurrentGroupScreenList(Long uid, String groupId);

    /**
     * @param uid      操作人id
     * @param groupId  群id
     * @param memberId 成员id，多个逗号隔开
     * @title setBanGetRedPacket
     * @description 设置群成员无法抢红包
     * @author quxinjun
     * @updateTime 2021/7/5 10:42
     */
    void setBanGetRedPacket(Long uid, String groupId, String memberId);

    /**
     * @param uid      操作人id
     * @param groupId  群id
     * @param memberId 成员id 多个逗号隔开
     * @title cancelBanGetRedPacket
     * @description 取消禁止抢红包
     * @author quxinjun
     * @updateTime 2021/7/5 12:42
     */
    void cancelBanGetRedPacket(Long uid, String groupId, String memberId);

    /**
     * @param uid       操作人id
     * @param groupId   群id
     * @param type      操作类型 1：获取未禁止抢红包成员 2：获取禁止抢红包成员
     * @param searchKey 搜索关键字
     * @title getBanGradMembersList
     * @description
     * @author quxinjun
     * @updateTime 2021/7/5 12:54
     * @return: java.util.List<com.ys.web.user.friends.vo.UserGroupVO>
     */
    List<UserGroupVO> getBanGradMembersList(Long uid, String groupId, Integer type, String searchKey);

    /**
     * @param uid     操作人id
     * @param groupId 群id
     * @title clearMessageRightAway
     * @description 立即清理消息
     * @author quxinjun
     * @updateTime 2021/7/28 10:20
     */
    void clearMessageRightAway(Long uid, String groupId);

    void setGradTimeForGroup(Long uid, String groupId, Integer count, Integer time);
}
